tengo un error:
"Uncaught (in promise) TypeError: _post1 $ _this3 $ selecte.localeCompare"Entiendo que post1 obtiene un número como argumento, pero ¿cómo puedo comparar los números de "localeCompare"?
return [...this.posts].sort((post1, post2) => post1[this.selectedSort]?.localeCompare(post2[this.selectedSort]));No tiene que usar localeCompare , con números puede usar sort((a, b) => ax - bx) si tiene una matriz de objetos con una propiedad de número que desea usar para ordenar.
Por ejemplo
const data = [{age: 12}, {age: 7}, {age: 18}]; const result = data.sort((a, b) => a.age - b.age); console.log(result);Solucioné temporalmente el problema con el operador if else , pero dejé el problema abierto porque quiero optimizar la función en el futuro.
if(this.selectedSort == 'id'){ return [...this.posts].sort((post1, post2) => post1[this.selectedSort] - post2[this.selectedSort]); } else{ return [...this.posts].sort((post1, post2) => post1[this.selectedSort]?.localeCompare(post2[this.selectedSort])); }¡Funcionó para mí!
return [...this.posts].sort((post1, post2) => String(post1[this.selectedSort])?.localeCompare(String(post2[this.selectedSort]), 'en', {numeric: true}));